/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package apprentissagejava;

import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;

/**
 *
 * @author nc
 */
public class CorrigeListes extends javax.swing.JFrame {

    private DefaultListModel leModelDeLaJlistDispo;
    private DefaultListModel leModelDeLaJlistSelec;

    /**
     * Creates new form CorrigeListes
     */
    public CorrigeListes() {
        initComponents();

        this.leModelDeLaJlistDispo = (DefaultListModel) jListProduitsDispo.getModel();
        this.leModelDeLaJlistSelec = (DefaultListModel) jListProduitsSelectionnes.getModel();
        
        leModelDeLaJlistDispo.addElement("Lucien");
        leModelDeLaJlistDispo.addElement("Pierrette");
        leModelDeLaJlistDispo.addElement("Kingston");
        
        this.majNbProduitsDesJlist();
    }
    // Fonction pour affecter
/**
 * majNbProduitsDesJlist() méthode qui met à jour les jlabel des nombres des produits
 * @author Lucien
 * @return Rien!!!
 * @param Rien!!!
 * 
 */
       private void majNbProduitsDesJlist(){
          jLabelNbProduitsDispo.setText(String.valueOf(leModelDeLaJlistDispo.size()));
          jLabelNbProduitsSelectionnes.setText(String.valueOf(leModelDeLaJlistSelec.size()));
       }
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jListProduitsDispo = new javax.swing.JList();
        jScrollPane2 = new javax.swing.JScrollPane();
        jListProduitsSelectionnes = new javax.swing.JList();
        jButtonDeselectionner = new javax.swing.JButton();
        jButtonSelectionner = new javax.swing.JButton();
        jButtonToutDeselectionner = new javax.swing.JButton();
        jButtonAjoutUnProduit = new javax.swing.JButton();
        jButtonSupprimerSelection = new javax.swing.JButton();
        jButtonToutSelectionner = new javax.swing.JButton();
        jButtonAjouterXProduits = new javax.swing.JButton();
        jButtonToutSupprimer = new javax.swing.JButton();
        jLabelEtiquetteNbProdSelectionne = new javax.swing.JLabel();
        jLabelEtiquetteNbProdDispo = new javax.swing.JLabel();
        jLabelEtiquetteListeSelectionne = new javax.swing.JLabel();
        jLabelEtiquetteListeDispo = new javax.swing.JLabel();
        jLabelNbProduitsSelectionnes = new javax.swing.JLabel();
        jLabelNbProduitsDispo = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jListProduitsDispo.setModel(new DefaultListModel());
        jScrollPane1.setViewportView(jListProduitsDispo);

        jListProduitsSelectionnes.setModel(new DefaultListModel());
        jScrollPane2.setViewportView(jListProduitsSelectionnes);

        jButtonDeselectionner.setText("<= Déselectionner");
        jButtonDeselectionner.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonDeselectionnerActionPerformed(evt);
            }
        });

        jButtonSelectionner.setText("Sélectionner =>");
        jButtonSelectionner.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonSelectionnerActionPerformed(evt);
            }
        });

        jButtonToutDeselectionner.setText("Tout Déselectionner");
        jButtonToutDeselectionner.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonToutDeselectionnerActionPerformed(evt);
            }
        });

        jButtonAjoutUnProduit.setText("Ajout d'un produit");
        jButtonAjoutUnProduit.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAjoutUnProduitActionPerformed(evt);
            }
        });

        jButtonSupprimerSelection.setText("Supprimer sélection");
        jButtonSupprimerSelection.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonSupprimerSelectionActionPerformed(evt);
            }
        });

        jButtonToutSelectionner.setText("Tout Selectionner =>");
        jButtonToutSelectionner.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonToutSelectionnerActionPerformed(evt);
            }
        });

        jButtonAjouterXProduits.setText("Ajouter X produits");
        jButtonAjouterXProduits.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAjouterXProduitsActionPerformed(evt);
            }
        });

        jButtonToutSupprimer.setText("Tout supprimer");
        jButtonToutSupprimer.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonToutSupprimerActionPerformed(evt);
            }
        });

        jLabelEtiquetteNbProdSelectionne.setText("Nb Produits sél.");

        jLabelEtiquetteNbProdDispo.setText("Nb Produits dispo");

        jLabelEtiquetteListeSelectionne.setText("Produits sélectionnés");

        jLabelEtiquetteListeDispo.setText("Produits disponibles");

        jLabelNbProduitsSelectionnes.setText("0");

        jLabelNbProduitsDispo.setText("0");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(83, 83, 83)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(48, 48, 48)
                                .addComponent(jLabelEtiquetteNbProdDispo)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jLabelNbProduitsDispo, javax.swing.GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE))
                            .addComponent(jButtonToutSupprimer, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButtonSupprimerSelection, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButtonAjoutUnProduit, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButtonAjouterXProduits, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                        .addGap(39, 39, 39)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jButtonToutSelectionner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButtonDeselectionner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButtonSelectionner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButtonToutDeselectionner, javax.swing.GroupLayout.PREFERRED_SIZE, 156, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(20, 20, 20))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(45, 45, 45)
                        .addComponent(jLabelEtiquetteListeDispo)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jLabelEtiquetteListeSelectionne)
                        .addGap(94, 94, 94))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jLabelEtiquetteNbProdSelectionne, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(45, 45, 45)
                                .addComponent(jLabelNbProduitsSelectionnes, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(16, 16, 16)
                                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 213, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addContainerGap(43, Short.MAX_VALUE))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(31, 31, 31)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelEtiquetteListeSelectionne)
                    .addComponent(jLabelEtiquetteListeDispo))
                .addGap(28, 28, 28)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jButtonToutSelectionner)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jButtonDeselectionner)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jButtonSelectionner)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jButtonToutDeselectionner)))
                        .addGap(24, 24, 24)
                        .addComponent(jButtonAjoutUnProduit))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabelEtiquetteNbProdSelectionne)
                            .addComponent(jLabelNbProduitsSelectionnes))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButtonSupprimerSelection)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButtonToutSupprimer)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButtonAjouterXProduits)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelEtiquetteNbProdDispo, javax.swing.GroupLayout.DEFAULT_SIZE, 29, Short.MAX_VALUE)
                    .addComponent(jLabelNbProduitsDispo))
                .addGap(59, 59, 59))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButtonAjoutUnProduitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjoutUnProduitActionPerformed

        String leNomDuProduit=JOptionPane.showInputDialog("Quel est le nom du produit à ajouter");
        this.leModelDeLaJlistDispo.addElement(leNomDuProduit);
        this.majNbProduitsDesJlist();
        
        
    }//GEN-LAST:event_jButtonAjoutUnProduitActionPerformed

    private void jButtonSupprimerSelectionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSupprimerSelectionActionPerformed
       if (jListProduitsDispo.getSelectedIndex() != -1) {
           this.leModelDeLaJlistDispo.removeElementAt(jListProduitsDispo.getSelectedIndex());
     }else this.leModelDeLaJlistDispo.removeElementAt(this.leModelDeLaJlistDispo.size()-1);
       this.majNbProduitsDesJlist();
    }//GEN-LAST:event_jButtonSupprimerSelectionActionPerformed

    private void jButtonToutSupprimerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonToutSupprimerActionPerformed
     this.leModelDeLaJlistDispo.removeAllElements();
     this.majNbProduitsDesJlist();
    }//GEN-LAST:event_jButtonToutSupprimerActionPerformed

    private void jButtonAjouterXProduitsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterXProduitsActionPerformed
        String leNombreDuProduit=JOptionPane.showInputDialog("Quel est le nombre du produit à ajouter");
        for (Integer i=1; i<= Integer.parseInt(leNombreDuProduit); i++){
         this.leModelDeLaJlistDispo.addElement("Produit" + " " + i.toString());
         this.majNbProduitsDesJlist();
        }
    }//GEN-LAST:event_jButtonAjouterXProduitsActionPerformed

    private void jButtonToutSelectionnerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonToutSelectionnerActionPerformed
   
        for (Integer i = 0; i < leModelDeLaJlistDispo.size(); i++){
         leModelDeLaJlistSelec.addElement(leModelDeLaJlistDispo.get(i));
        }
         leModelDeLaJlistDispo.clear();
         this.majNbProduitsDesJlist();
    }//GEN-LAST:event_jButtonToutSelectionnerActionPerformed

    private void jButtonToutDeselectionnerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonToutDeselectionnerActionPerformed
       for (Integer i = 0; i < leModelDeLaJlistSelec.size(); i++){
         leModelDeLaJlistDispo.addElement(leModelDeLaJlistSelec.get(i));
        }
         leModelDeLaJlistSelec.clear();
         this.majNbProduitsDesJlist();
    }//GEN-LAST:event_jButtonToutDeselectionnerActionPerformed

    private void jButtonSelectionnerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSelectionnerActionPerformed
      if (jListProduitsDispo.getSelectedIndex() != -1) {
       int indexProduitDispo = jListProduitsDispo.getSelectedIndex();
       leModelDeLaJlistSelec.addElement(leModelDeLaJlistDispo.get(indexProduitDispo));
       leModelDeLaJlistDispo.remove(indexProduitDispo);
      }    
          
       // leModelDeLaJlistSelec.addElement(jListProduitsDispo.getSelectedValue());}
     
         leModelDeLaJlistSelec.removeElement(leModelDeLaJlistDispo.size()-1);
         this.majNbProduitsDesJlist();
    }//GEN-LAST:event_jButtonSelectionnerActionPerformed

    private void jButtonDeselectionnerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDeselectionnerActionPerformed
      if (jListProduitsSelectionnes.getSelectedIndex() != -1) {
       int indexProduitDispo = jListProduitsSelectionnes.getSelectedIndex();
       leModelDeLaJlistDispo.addElement(leModelDeLaJlistSelec.get(indexProduitDispo));
       leModelDeLaJlistSelec.remove(indexProduitDispo);
      }
        this.majNbProduitsDesJlist();
    }//GEN-LAST:event_jButtonDeselectionnerActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(CorrigeListes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(CorrigeListes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(CorrigeListes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(CorrigeListes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new CorrigeListes().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonAjoutUnProduit;
    private javax.swing.JButton jButtonAjouterXProduits;
    private javax.swing.JButton jButtonDeselectionner;
    private javax.swing.JButton jButtonSelectionner;
    private javax.swing.JButton jButtonSupprimerSelection;
    private javax.swing.JButton jButtonToutDeselectionner;
    private javax.swing.JButton jButtonToutSelectionner;
    private javax.swing.JButton jButtonToutSupprimer;
    private javax.swing.JLabel jLabelEtiquetteListeDispo;
    private javax.swing.JLabel jLabelEtiquetteListeSelectionne;
    private javax.swing.JLabel jLabelEtiquetteNbProdDispo;
    private javax.swing.JLabel jLabelEtiquetteNbProdSelectionne;
    private javax.swing.JLabel jLabelNbProduitsDispo;
    private javax.swing.JLabel jLabelNbProduitsSelectionnes;
    private javax.swing.JList jListProduitsDispo;
    private javax.swing.JList jListProduitsSelectionnes;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    // End of variables declaration//GEN-END:variables
}
